<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: g2o::Solver Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classg2o_1_1_solver.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="classg2o_1_1_solver-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">g2o::Solver Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Generic interface for a sparse solver operating on a graph which solves one iteration of the linearized objective function.  
 <a href="classg2o_1_1_solver.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="solver_8h_source.html">solver.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for g2o::Solver:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classg2o_1_1_solver__inherit__graph.svg" width="190" height="187"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for g2o::Solver:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classg2o_1_1_solver__coll__graph.svg" width="564" height="383"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac32a7e75275f6595a66d948a0fc2984a"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ac32a7e75275f6595a66d948a0fc2984a">additionalVectorSpace</a> () const</td></tr>
<tr class="separator:ac32a7e75275f6595a66d948a0fc2984a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3212ad9d80f8f5ad15b72c2b55000095"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a3212ad9d80f8f5ad15b72c2b55000095">b</a> ()</td></tr>
<tr class="memdesc:a3212ad9d80f8f5ad15b72c2b55000095"><td class="mdescLeft">&#160;</td><td class="mdescRight">return b, the right hand side of the system  <a href="#a3212ad9d80f8f5ad15b72c2b55000095">More...</a><br /></td></tr>
<tr class="separator:a3212ad9d80f8f5ad15b72c2b55000095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a812d5cad59fed145c3f47bcf99419a97"><td class="memItemLeft" align="right" valign="top">const double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a812d5cad59fed145c3f47bcf99419a97">b</a> () const</td></tr>
<tr class="separator:a812d5cad59fed145c3f47bcf99419a97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c93ac0f528ffe05867d33150c54f46f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a6c93ac0f528ffe05867d33150c54f46f">buildStructure</a> (bool zeroBlocks=false)=0</td></tr>
<tr class="memdesc:a6c93ac0f528ffe05867d33150c54f46f"><td class="mdescLeft">&#160;</td><td class="mdescRight">build the structure of the system  <a href="#a6c93ac0f528ffe05867d33150c54f46f">More...</a><br /></td></tr>
<tr class="separator:a6c93ac0f528ffe05867d33150c54f46f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1565e85d5ca68a87ad7f06f8164a8c0"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ac1565e85d5ca68a87ad7f06f8164a8c0">buildSystem</a> ()=0</td></tr>
<tr class="memdesc:ac1565e85d5ca68a87ad7f06f8164a8c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">build the current system  <a href="#ac1565e85d5ca68a87ad7f06f8164a8c0">More...</a><br /></td></tr>
<tr class="separator:ac1565e85d5ca68a87ad7f06f8164a8c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc33768e6c024e11d9e3c9d938b59b7f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#afc33768e6c024e11d9e3c9d938b59b7f">computeMarginals</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixXd &gt; &amp;spinv, const std::vector&lt; std::pair&lt; int, int &gt; &gt; &amp;blockIndices)=0</td></tr>
<tr class="memdesc:afc33768e6c024e11d9e3c9d938b59b7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">computes the block diagonal elements of the pattern specified in the input and stores them in given <a class="el" href="classg2o_1_1_sparse_block_matrix.html" title="Sparse matrix which uses blocks. ">SparseBlockMatrix</a>  <a href="#afc33768e6c024e11d9e3c9d938b59b7f">More...</a><br /></td></tr>
<tr class="separator:afc33768e6c024e11d9e3c9d938b59b7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a532174e1ee53642880d2d59c128b037b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a532174e1ee53642880d2d59c128b037b">init</a> (<a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a> *<a class="el" href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">optimizer</a>, bool online=false)=0</td></tr>
<tr class="memdesc:a532174e1ee53642880d2d59c128b037b"><td class="mdescLeft">&#160;</td><td class="mdescRight">initialize the solver, called once before the first iteration  <a href="#a532174e1ee53642880d2d59c128b037b">More...</a><br /></td></tr>
<tr class="separator:a532174e1ee53642880d2d59c128b037b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab472c69fa089382242a75be76e8f883e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ab472c69fa089382242a75be76e8f883e">levenberg</a> () const</td></tr>
<tr class="memdesc:ab472c69fa089382242a75be76e8f883e"><td class="mdescLeft">&#160;</td><td class="mdescRight">the system is Levenberg-Marquardt  <a href="#ab472c69fa089382242a75be76e8f883e">More...</a><br /></td></tr>
<tr class="separator:ab472c69fa089382242a75be76e8f883e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a266bc31d289e824de6166522579ed385"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">optimizer</a> () const</td></tr>
<tr class="memdesc:a266bc31d289e824de6166522579ed385"><td class="mdescLeft">&#160;</td><td class="mdescRight">the optimizer (graph) on which the solver works  <a href="#a266bc31d289e824de6166522579ed385">More...</a><br /></td></tr>
<tr class="separator:a266bc31d289e824de6166522579ed385"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c40dae9b999c4d18e57b02fd0e0ade2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a3c40dae9b999c4d18e57b02fd0e0ade2">restoreDiagonal</a> ()=0</td></tr>
<tr class="memdesc:a3c40dae9b999c4d18e57b02fd0e0ade2"><td class="mdescLeft">&#160;</td><td class="mdescRight">restore a previosly made backup of the diagonal  <a href="#a3c40dae9b999c4d18e57b02fd0e0ade2">More...</a><br /></td></tr>
<tr class="separator:a3c40dae9b999c4d18e57b02fd0e0ade2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14852543c4dc3f3e7088efe03aa135eb"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a14852543c4dc3f3e7088efe03aa135eb">saveHessian</a> (const std::string &amp;) const =0</td></tr>
<tr class="memdesc:a14852543c4dc3f3e7088efe03aa135eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">write the hessian to disk using the specified file name  <a href="#a14852543c4dc3f3e7088efe03aa135eb">More...</a><br /></td></tr>
<tr class="separator:a14852543c4dc3f3e7088efe03aa135eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc8d6a8ae7847a157d4a2f44aea14c74"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#acc8d6a8ae7847a157d4a2f44aea14c74">schur</a> ()=0</td></tr>
<tr class="memdesc:acc8d6a8ae7847a157d4a2f44aea14c74"><td class="mdescLeft">&#160;</td><td class="mdescRight">should the solver perform the schur complement or not  <a href="#acc8d6a8ae7847a157d4a2f44aea14c74">More...</a><br /></td></tr>
<tr class="separator:acc8d6a8ae7847a157d4a2f44aea14c74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad35b33cee11586c8adea12cd6949f74a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ad35b33cee11586c8adea12cd6949f74a">setAdditionalVectorSpace</a> (size_t s)</td></tr>
<tr class="separator:ad35b33cee11586c8adea12cd6949f74a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94a0d5196c7859c6c37fc2368ac56be3"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a94a0d5196c7859c6c37fc2368ac56be3">setLambda</a> (double lambda, bool backup=false)=0</td></tr>
<tr class="memdesc:a94a0d5196c7859c6c37fc2368ac56be3"><td class="mdescLeft">&#160;</td><td class="mdescRight">update the system while performing Levenberg, i.e., modifying the diagonal components of A by doing += lambda along the main diagonal of the Matrix.  <a href="#a94a0d5196c7859c6c37fc2368ac56be3">More...</a><br /></td></tr>
<tr class="separator:a94a0d5196c7859c6c37fc2368ac56be3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01e21c08d7ec8c8051de565b5c314fa1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a01e21c08d7ec8c8051de565b5c314fa1">setLevenberg</a> (bool <a class="el" href="classg2o_1_1_solver.html#ab472c69fa089382242a75be76e8f883e">levenberg</a>)</td></tr>
<tr class="separator:a01e21c08d7ec8c8051de565b5c314fa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af27b647cdc19d99ea5378b443e118bb0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#af27b647cdc19d99ea5378b443e118bb0">setOptimizer</a> (<a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a> *<a class="el" href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">optimizer</a>)</td></tr>
<tr class="separator:af27b647cdc19d99ea5378b443e118bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30134c828054375b1cc16ede2a879761"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a30134c828054375b1cc16ede2a879761">setSchur</a> (bool s)=0</td></tr>
<tr class="separator:a30134c828054375b1cc16ede2a879761"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3ef2a487d991363ba86af2840b0d7cd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ad3ef2a487d991363ba86af2840b0d7cd">setWriteDebug</a> (bool)=0</td></tr>
<tr class="memdesc:ad3ef2a487d991363ba86af2840b0d7cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">write debug output of the Hessian if system is not positive definite  <a href="#ad3ef2a487d991363ba86af2840b0d7cd">More...</a><br /></td></tr>
<tr class="separator:ad3ef2a487d991363ba86af2840b0d7cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c359a886db57f2f81e54a2113f3bd38"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a9c359a886db57f2f81e54a2113f3bd38">solve</a> ()=0</td></tr>
<tr class="memdesc:a9c359a886db57f2f81e54a2113f3bd38"><td class="mdescLeft">&#160;</td><td class="mdescRight">solve Ax = b  <a href="#a9c359a886db57f2f81e54a2113f3bd38">More...</a><br /></td></tr>
<tr class="separator:a9c359a886db57f2f81e54a2113f3bd38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af097bdf5c8dc4bb017a2cec4038d5a56"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#af097bdf5c8dc4bb017a2cec4038d5a56">Solver</a> ()</td></tr>
<tr class="separator:af097bdf5c8dc4bb017a2cec4038d5a56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36c68f7bc0b8864ee7722bc3c06de554"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a36c68f7bc0b8864ee7722bc3c06de554">supportsSchur</a> ()</td></tr>
<tr class="memdesc:a36c68f7bc0b8864ee7722bc3c06de554"><td class="mdescLeft">&#160;</td><td class="mdescRight">does this solver support the Schur complement for solving a system consisting of poses and landmarks.  <a href="#a36c68f7bc0b8864ee7722bc3c06de554">More...</a><br /></td></tr>
<tr class="separator:a36c68f7bc0b8864ee7722bc3c06de554"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca71878e37081b6138f90ac60ec1f89"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#aeca71878e37081b6138f90ac60ec1f89">updateStructure</a> (const std::vector&lt; <a class="el" href="classg2o_1_1_hyper_graph_1_1_vertex.html">HyperGraph::Vertex</a> *&gt; &amp;vset, const <a class="el" href="classg2o_1_1_hyper_graph.html#a5e2970e236c0dcb4eff7c205d7b6b4ae">HyperGraph::EdgeSet</a> &amp;edges)=0</td></tr>
<tr class="memdesc:aeca71878e37081b6138f90ac60ec1f89"><td class="mdescLeft">&#160;</td><td class="mdescRight">update the structures for online processing  <a href="#aeca71878e37081b6138f90ac60ec1f89">More...</a><br /></td></tr>
<tr class="separator:aeca71878e37081b6138f90ac60ec1f89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a5907ca706eef77acce4ab534857c96"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a7a5907ca706eef77acce4ab534857c96">vectorSize</a> () const</td></tr>
<tr class="memdesc:a7a5907ca706eef77acce4ab534857c96"><td class="mdescLeft">&#160;</td><td class="mdescRight">return the size of the solution vector (x) and b  <a href="#a7a5907ca706eef77acce4ab534857c96">More...</a><br /></td></tr>
<tr class="separator:a7a5907ca706eef77acce4ab534857c96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f6f14940eccea0f9bf9e2ea144c9b4d"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a0f6f14940eccea0f9bf9e2ea144c9b4d">writeDebug</a> () const =0</td></tr>
<tr class="separator:a0f6f14940eccea0f9bf9e2ea144c9b4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb097d8568624a1f3af4dba808e5593b"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#acb097d8568624a1f3af4dba808e5593b">x</a> ()</td></tr>
<tr class="memdesc:acb097d8568624a1f3af4dba808e5593b"><td class="mdescLeft">&#160;</td><td class="mdescRight">return x, the solution vector  <a href="#acb097d8568624a1f3af4dba808e5593b">More...</a><br /></td></tr>
<tr class="separator:acb097d8568624a1f3af4dba808e5593b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3c537aa5890e1694766c8aee46912a0"><td class="memItemLeft" align="right" valign="top">const double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ad3c537aa5890e1694766c8aee46912a0">x</a> () const</td></tr>
<tr class="separator:ad3c537aa5890e1694766c8aee46912a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b4a7c818ea0904772bc8bea6f1bbe86"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a3b4a7c818ea0904772bc8bea6f1bbe86">~Solver</a> ()</td></tr>
<tr class="separator:a3b4a7c818ea0904772bc8bea6f1bbe86"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ad1f85839e85f3e2c49112fb7e2b843ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#ad1f85839e85f3e2c49112fb7e2b843ad">resizeVector</a> (size_t sx)</td></tr>
<tr class="separator:ad1f85839e85f3e2c49112fb7e2b843ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a6a1492959487c279747a8f3097a5f04e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a6a1492959487c279747a8f3097a5f04e">_additionalVectorSpace</a></td></tr>
<tr class="separator:a6a1492959487c279747a8f3097a5f04e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52c92c9bf5db0da3322da3a02dbeb245"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a52c92c9bf5db0da3322da3a02dbeb245">_b</a></td></tr>
<tr class="separator:a52c92c9bf5db0da3322da3a02dbeb245"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b7f6d4e00e3734f5ed9bd3dfac201a6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a8b7f6d4e00e3734f5ed9bd3dfac201a6">_isLevenberg</a></td></tr>
<tr class="memdesc:a8b7f6d4e00e3734f5ed9bd3dfac201a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">the system we gonna solve is a Levenberg-Marquardt system  <a href="#a8b7f6d4e00e3734f5ed9bd3dfac201a6">More...</a><br /></td></tr>
<tr class="separator:a8b7f6d4e00e3734f5ed9bd3dfac201a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a263003f9053537f92d5d019ce5c53771"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a263003f9053537f92d5d019ce5c53771">_maxXSize</a></td></tr>
<tr class="separator:a263003f9053537f92d5d019ce5c53771"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff3275985d996329df15070348c21292"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#aff3275985d996329df15070348c21292">_optimizer</a></td></tr>
<tr class="separator:aff3275985d996329df15070348c21292"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94ee5e303a754f4ff338a7b032c214ae"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a94ee5e303a754f4ff338a7b032c214ae">_x</a></td></tr>
<tr class="separator:a94ee5e303a754f4ff338a7b032c214ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcf7731347f14915bd9ba963021ea830"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#abcf7731347f14915bd9ba963021ea830">_xSize</a></td></tr>
<tr class="separator:abcf7731347f14915bd9ba963021ea830"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a19a6b5b126e7bef1c99dff89567f2eff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classg2o_1_1_solver.html">Solver</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a19a6b5b126e7bef1c99dff89567f2eff">operator=</a> (const <a class="el" href="classg2o_1_1_solver.html">Solver</a> &amp;)</td></tr>
<tr class="separator:a19a6b5b126e7bef1c99dff89567f2eff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a040c384f90e39504853a29648a71bc25"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_solver.html#a040c384f90e39504853a29648a71bc25">Solver</a> (const <a class="el" href="classg2o_1_1_solver.html">Solver</a> &amp;)</td></tr>
<tr class="separator:a040c384f90e39504853a29648a71bc25"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Generic interface for a sparse solver operating on a graph which solves one iteration of the linearized objective function. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="af097bdf5c8dc4bb017a2cec4038d5a56"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">g2o::Solver::Solver </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a3b4a7c818ea0904772bc8bea6f1bbe86"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">g2o::Solver::~Solver </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a040c384f90e39504853a29648a71bc25"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">g2o::Solver::Solver </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classg2o_1_1_solver.html">Solver</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac32a7e75275f6595a66d948a0fc2984a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t g2o::Solver::additionalVectorSpace </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a3212ad9d80f8f5ad15b72c2b55000095"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double* g2o::Solver::b </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>return b, the right hand side of the system </p>

</div>
</div>
<a id="a812d5cad59fed145c3f47bcf99419a97"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const double* g2o::Solver::b </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a6c93ac0f528ffe05867d33150c54f46f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::buildStructure </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>zeroBlocks</em> = <code>false</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>build the structure of the system </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a17e4392d3cca9a9d7cf38bb46d073b86">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="ac1565e85d5ca68a87ad7f06f8164a8c0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::buildSystem </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>build the current system </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a2654a8d52f38e5ce23720a8de302e2e7">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="afc33768e6c024e11d9e3c9d938b59b7f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::computeMarginals </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixXd &gt; &amp;&#160;</td>
          <td class="paramname"><em>spinv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; std::pair&lt; int, int &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>blockIndices</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>computes the block diagonal elements of the pattern specified in the input and stores them in given <a class="el" href="classg2o_1_1_sparse_block_matrix.html" title="Sparse matrix which uses blocks. ">SparseBlockMatrix</a> </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#ac21cd7e2c9b8a1414f7a2dccb0d30a0e">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="a532174e1ee53642880d2d59c128b037b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a> *&#160;</td>
          <td class="paramname"><em>optimizer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>online</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>initialize the solver, called once before the first iteration </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a8bf01018abc3bfddfa3b29a380a1d6cb">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="ab472c69fa089382242a75be76e8f883e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool g2o::Solver::levenberg </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>the system is Levenberg-Marquardt </p>

</div>
</div>
<a id="a19a6b5b126e7bef1c99dff89567f2eff"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_solver.html">Solver</a>&amp; g2o::Solver::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classg2o_1_1_solver.html">Solver</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a266bc31d289e824de6166522579ed385"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a>* g2o::Solver::optimizer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>the optimizer (graph) on which the solver works </p>

</div>
</div>
<a id="ad1f85839e85f3e2c49112fb7e2b843ad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void g2o::Solver::resizeVector </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>sx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a3c40dae9b999c4d18e57b02fd0e0ade2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void g2o::Solver::restoreDiagonal </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>restore a previosly made backup of the diagonal </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a2136931d7aa2f54df5207556c4685809">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="a14852543c4dc3f3e7088efe03aa135eb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::saveHessian </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>write the hessian to disk using the specified file name </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a51563178d31f3eae6ec61993ea069a77">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="acc8d6a8ae7847a157d4a2f44aea14c74"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::schur </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>should the solver perform the schur complement or not </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a382173946f1dd929a625e3708c959883">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="ad35b33cee11586c8adea12cd6949f74a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void g2o::Solver::setAdditionalVectorSpace </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a94a0d5196c7859c6c37fc2368ac56be3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::setLambda </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>lambda</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>backup</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>update the system while performing Levenberg, i.e., modifying the diagonal components of A by doing += lambda along the main diagonal of the Matrix. </p>
<p>Note that this function may be called with a positive and a negative lambda. The latter is used to undo a former modification. If backup is true, then the solver should store a backup of the diagonal, which can be restored by <a class="el" href="classg2o_1_1_solver.html#a3c40dae9b999c4d18e57b02fd0e0ade2" title="restore a previosly made backup of the diagonal ">restoreDiagonal()</a> </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#acc63a23e5b35e4f72d46dc22719aa56f">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="a01e21c08d7ec8c8051de565b5c314fa1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void g2o::Solver::setLevenberg </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>levenberg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="af27b647cdc19d99ea5378b443e118bb0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void g2o::Solver::setOptimizer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a> *&#160;</td>
          <td class="paramname"><em>optimizer</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a30134c828054375b1cc16ede2a879761"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void g2o::Solver::setSchur </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a6dd8e7e7a099410005cb96ff874d8866">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="ad3ef2a487d991363ba86af2840b0d7cd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void g2o::Solver::setWriteDebug </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>write debug output of the Hessian if system is not positive definite </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a1bff5dc13e3408fa76c019347104acd0">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="a9c359a886db57f2f81e54a2113f3bd38"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::solve </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>solve Ax = b </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a589a75a131cce100c1945ad2786214d7">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="a36c68f7bc0b8864ee7722bc3c06de554"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::supportsSchur </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>does this solver support the Schur complement for solving a system consisting of poses and landmarks. </p>
<p>Re-implemement in a derived solver, if your solver supports it. </p>

<p>Reimplemented in <a class="el" href="classg2o_1_1_block_solver.html#a68dc822ce48e80ceacce69c7bd029674">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="aeca71878e37081b6138f90ac60ec1f89"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::updateStructure </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classg2o_1_1_hyper_graph_1_1_vertex.html">HyperGraph::Vertex</a> *&gt; &amp;&#160;</td>
          <td class="paramname"><em>vset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classg2o_1_1_hyper_graph.html#a5e2970e236c0dcb4eff7c205d7b6b4ae">HyperGraph::EdgeSet</a> &amp;&#160;</td>
          <td class="paramname"><em>edges</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>update the structures for online processing </p>

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#a662473598270cdf89075607f87440759">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="a7a5907ca706eef77acce4ab534857c96"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t g2o::Solver::vectorSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>return the size of the solution vector (x) and b </p>

</div>
</div>
<a id="a0f6f14940eccea0f9bf9e2ea144c9b4d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool g2o::Solver::writeDebug </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implemented in <a class="el" href="classg2o_1_1_block_solver.html#aab81798b80dcb6c4182fa1d510914234">g2o::BlockSolver&lt; Traits &gt;</a>.</p>

</div>
</div>
<a id="acb097d8568624a1f3af4dba808e5593b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double* g2o::Solver::x </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>return x, the solution vector </p>

</div>
</div>
<a id="ad3c537aa5890e1694766c8aee46912a0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const double* g2o::Solver::x </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a6a1492959487c279747a8f3097a5f04e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t g2o::Solver::_additionalVectorSpace</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a52c92c9bf5db0da3322da3a02dbeb245"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double* g2o::Solver::_b</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8b7f6d4e00e3734f5ed9bd3dfac201a6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool g2o::Solver::_isLevenberg</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>the system we gonna solve is a Levenberg-Marquardt system </p>

</div>
</div>
<a id="a263003f9053537f92d5d019ce5c53771"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t g2o::Solver::_maxXSize</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aff3275985d996329df15070348c21292"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a>* g2o::Solver::_optimizer</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a94ee5e303a754f4ff338a7b032c214ae"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double* g2o::Solver::_x</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="abcf7731347f14915bd9ba963021ea830"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t g2o::Solver::_xSize</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/alejandro/Desarrollo eclipse/os1/Thirdparty/g2o/g2o/core/<a class="el" href="solver_8h_source.html">solver.h</a></li>
<li>/home/alejandro/Desarrollo eclipse/os1/Thirdparty/g2o/g2o/core/<a class="el" href="solver_8cpp.html">solver.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceg2o.html">g2o</a></li><li class="navelem"><a class="el" href="classg2o_1_1_solver.html">Solver</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
